using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._TopographicProductionTools._Cartography._CartographicRefinement
{
    /// <summary>
    /// <para>Make Masks From Rules</para>
    /// <para>Creates polygon masks for features based on color rules.</para>
    /// <para>根据颜色规则为要素创建面蒙版。</para>
    /// </summary>    
    [DisplayName("Make Masks From Rules")]
    public class MakeMasksFromRules : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public MakeMasksFromRules()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_map">
        /// <para>Input Map</para>
        /// <para>The input map containing symbolized features.</para>
        /// <para>包含符号化要素的输入地图。</para>
        /// </param>
        /// <param name="_rule_file">
        /// <para>Rule File</para>
        /// <para>The XML file containing rules that define how features should be masked based on colors and symbol parts.</para>
        /// <para>包含定义如何根据颜色和符号部分遮罩要素的规则的 XML 文件。</para>
        /// </param>
        /// <param name="_out_feature_dataset">
        /// <para>Output Feature Dataset</para>
        /// <para>The output feature dataset. The tool will create a feature dataset containing polygon feature classes that will be used for masking. The spatial reference for the feature dataset will be taken from the map for which masks are generated.</para>
        /// <para>输出要素数据集。该工具将创建一个要素数据集，其中包含将用于屏蔽的面要素类。要素数据集的空间参考将从为其生成掩膜的地图中获取。</para>
        /// </param>
        public MakeMasksFromRules(object _in_map, object _rule_file, object _out_feature_dataset)
        {
            this._in_map = _in_map;
            this._rule_file = _rule_file;
            this._out_feature_dataset = _out_feature_dataset;
        }
        public override string ToolboxName => "Topographic Production Tools";

        public override string ToolName => "Make Masks From Rules";

        public override string CallName => "topographic.MakeMasksFromRules";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_map, _rule_file, _out_feature_dataset];

        /// <summary>
        /// <para>Input Map</para>
        /// <para>The input map containing symbolized features.</para>
        /// <para>包含符号化要素的输入地图。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Map")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_map { get; set; }


        /// <summary>
        /// <para>Rule File</para>
        /// <para>The XML file containing rules that define how features should be masked based on colors and symbol parts.</para>
        /// <para>包含定义如何根据颜色和符号部分遮罩要素的规则的 XML 文件。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Rule File")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _rule_file { get; set; }


        /// <summary>
        /// <para>Output Feature Dataset</para>
        /// <para>The output feature dataset. The tool will create a feature dataset containing polygon feature classes that will be used for masking. The spatial reference for the feature dataset will be taken from the map for which masks are generated.</para>
        /// <para>输出要素数据集。该工具将创建一个要素数据集，其中包含将用于屏蔽的面要素类。要素数据集的空间参考将从为其生成掩膜的地图中获取。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_feature_dataset { get; set; }


        public MakeMasksFromRules SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}